package com.pro.framework.api.enums;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * HTTP 请求类型枚举
 * 表示常见的 HTTP 方法及其适用场景
 */
@Schema(description = "HTTP请求类型枚举")
@Getter
@AllArgsConstructor
public enum EnumHttpMethod implements IEnumStr {

    /**
     * GET 请求：用于获取资源，不应有副作用（幂等）
     * 示例：获取用户详情、查询商品列表
     */
    GET("GET请求"),

    /**
     * POST 请求：用于创建资源或提交数据，可能产生副作用（非幂等）
     * 示例：创建订单、提交表单
     */
    POST("POST请求"),

    /**
     * PUT 请求：用于更新完整资源，幂等操作（每次相同请求结果一致）
     * 示例：更新用户信息（整对象替换）
     */
    PUT("PUT请求"),

    /**
     * DELETE 请求：用于删除资源，通常是幂等的
     * 示例：删除评论、注销账号
     */
    DELETE("DELETE请求"),

    /**
     * PATCH 请求：用于部分更新资源，区别于 PUT 的整体替换
     * 示例：修改商品价格、修改部分字段
     */
    PATCH("PATCH请求");

    @Schema(description = "请求类型说明")
    private final String label;
}
